Commit 103421ab authored by TYAGIRIS's avatar TYAGIRIS
Browse files

merge with latest main-pc

parents 3c039cc9 e31ba67e
Loading
Loading
Loading
Loading
Loading
+46 −9
Original line number Diff line number Diff line
@@ -781,7 +781,7 @@ stages:
    -   echo "Reproduce locally with:"
    -   echo -e "1. Create references with target branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:\n\t- git checkout $(cat $FLOAT_REF_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- mv IVAS_cod IVAS_cod_ref\n\t- mv IVAS_dec IVAS_dec_ref\n\t- python3 -m pytest $(cat $ERRORS_TESTCASES_LIST) --update_ref 1 --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH"
    -   echo -e "2. Run test with source branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:\n\t- git checkout $(cat $CUT_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- python3 -m pytest $(cat $ERRORS_TESTCASES_LIST) --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH"
    -   echo "The individual command lines can be found in the changes*.csv files in the job artifacts."
    -   echo "The individual command lines can be found in the regressions_crashes.csv files in the job artifacts."
    - elif [ $regressions_found != 0 ] && [ "$SKIP_REGRESSION_CHECK" != "true" ]; then
    -    cat regression_log.txt
    -    if [ $allow_regressions_flag == 0 ]; then
@@ -794,7 +794,7 @@ stages:
    -   echo "Reproduce locally with:"
    -   echo -e "1. Create references with target branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:\n\t- git checkout $(cat $FLOAT_REF_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- mv IVAS_cod IVAS_cod_ref\n\t- mv IVAS_dec IVAS_dec_ref\n\t- python3 -m pytest $(cat $FAILED_TESTCASES_LIST) --update_ref 1 --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH"
    -   echo -e "2. Run test with source branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:\n\t- git checkout $(cat $CUT_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- python3 -m pytest $(cat $FAILED_TESTCASES_LIST) --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH"
    -   echo "The individual command lines can be found in the changes*.csv files in the job artifacts."
    -   echo "The individual command lines can be found in the regressions_*.csv files in the job artifacts."
    - fi

    - exit $exit_code
@@ -819,11 +819,16 @@ stages:
      - $FLOAT_REF_COMMIT_FILE
      - $CUT_COMMIT_FILE
      - $MERGE_TARGET_COMMIT_FILE
      - changes_crashes.csv
      - changes_MLD.csv
      - changes_MAXIMUM_ABS_DIFF.csv
      - changes_MIN_SSNR.csv
      - changes_MIN_ODG.csv
      - 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
    expose_as: "pytest compare results"
    reports:
      junit:
@@ -858,8 +863,12 @@ stages:
    - fi
    - make clean
    - make -j $make_args
    - testcase_timeout=$TESTCASE_TIMEOUT_LTV_SANITIZERS
    - python3 -m pytest $TEST_SUITE -v --tb=no --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml --testcase_timeout $testcase_timeout --ref_encoder_path $DUT_ENCODER_PATH --ref_decoder_path $DUT_DECODER_PATH
    - testcase_timeout_arg="--testcase_timeout $TESTCASE_TIMEOUT_LTV_SANITIZERS"
    # disable per-testcase timeout for msan to evaluate what is going on that it takes so long
    - if [[ $CLANG_NUM = 1 ]]; then
    -   testcase_timeout_arg=""
    - fi
    - python3 -m pytest $TEST_SUITE -v --tb=no --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml $testcase_timeout_arg --ref_encoder_path $DUT_ENCODER_PATH --ref_decoder_path $DUT_DECODER_PATH
  artifacts:
    name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results"
    when: always
@@ -1006,6 +1015,19 @@ fail-pipeline-if-in-draft:
    - echo "Your MR is still in Draft state, set it to ready to be mergable, then retrigger the pipeline."
    - exit 1

# this branch runs on merges to main-pc only and will fail if the branch itself does not conform to the naming conventions
check-naming-of-branch-for-main-pc-merges:
  extends:
    - .rules-merge-request-to-main-pc
  stage: prevalidate
  tags:
    - ivas-basop-linux
  script:
    - *update-scripts-repo
    - if [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[skip[[:space:]_-]name[[:space:]_-]check\] ]] && [[ ! "$CI_MERGE_REQUEST_TITLE" =~ \[CI\] ]]; then
    -   ci/get_float_ref_branch_name.sh $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
    - fi

# ---------------------------------------------------------------
# verification jobs
# ---------------------------------------------------------------
@@ -1217,6 +1239,14 @@ build-codec-linux-debugging-make:
# Short test jobs that run in merge request pipelines
# ---------------------------------------------------------------

.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
  # 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
  -   REFERENCE_BRANCH=$(cat tmp_ref_branch.txt)
  - fi

### jobs that check for bitexactness of fx encoder and decoder
check-be-to-target-short-enc-0db:
  extends:
@@ -1306,6 +1336,7 @@ check-regressions-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
    - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER"
@@ -1322,6 +1353,7 @@ check-regressions-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
    - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER"
@@ -1354,6 +1386,7 @@ check-regressions-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
    - TEST_SUITE="$SHORT_TEST_SUITE"
@@ -1370,6 +1403,7 @@ check-regressions-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
    - TEST_SUITE="$SHORT_TEST_SUITE"
@@ -1403,6 +1437,7 @@ ivas-pytest-compare_to_ref-short-enc:
    - .rules-pytest-to-ref-short
    - .test-job-linux
  before_script:
    - *set-reference-for-basop-port-branch
    - USE_LTV=0
    - ENCODER_TEST="true"
    - DUT_DECODER_PATH=./$REF_DECODER_PATH
@@ -1415,6 +1450,7 @@ ivas-pytest-compare_to_ref-short-enc-lev-10:
    - .rules-pytest-to-ref-short
    - .test-job-linux
  before_script:
    - *set-reference-for-basop-port-branch
    - USE_LTV=0
    - ENCODER_TEST="true"
    - DUT_DECODER_PATH=./$REF_DECODER_PATH
@@ -1427,6 +1463,7 @@ ivas-pytest-compare_to_ref-short-enc-lev+10:
    - .rules-pytest-to-ref-short
    - .test-job-linux
  before_script:
    - *set-reference-for-basop-port-branch
    - USE_LTV=0
    - ENCODER_TEST="true"
    - DUT_DECODER_PATH=./$REF_DECODER_PATH
+1 −1
Original line number Diff line number Diff line
/******************************************************************************************************

   (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
   (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
+189 −63
Original line number Diff line number Diff line
@@ -82,7 +82,6 @@
    <ClCompile Include="..\lib_com\tools_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\oper_32b.c" />
    <ClCompile Include="..\lib_com\swb_bwe_com_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
@@ -161,7 +160,6 @@
    <ClCompile Include="..\lib_com\log2.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\rom_basic_math.c" />
    <ClCompile Include="..\lib_com\swb_bwe_com_lr_fx.c">
      <Filter>common_evs_c</Filter>
    </ClCompile>
@@ -216,7 +214,6 @@
    <ClCompile Include="..\lib_com\cng_exc_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\complex_basop.c" />
    <ClCompile Include="..\lib_com\dlpc_bfi_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
@@ -361,65 +358,192 @@
    <ClCompile Include="..\lib_com\gain_inov_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\float_to_fix_ops.c" />
    <ClCompile Include="..\lib_com\parameter_bitmaping_fx.c" />
    <ClCompile Include="..\lib_com\basop32.c" />
    <ClCompile Include="..\lib_com\basop_com_lpc.c" />
    <ClCompile Include="..\lib_com\basop_lsf_tools.c" />
    <ClCompile Include="..\lib_com\basop_tcx_utils.c" />
    <ClCompile Include="..\lib_com\basop_util.c" />
    <ClCompile Include="..\lib_com\bitstream.c" />
    <ClCompile Include="..\lib_com\cldfb.c" />
    <ClCompile Include="..\lib_com\cng_exc.c" />
    <ClCompile Include="..\lib_com\core_com_config.c" />
    <ClCompile Include="..\lib_com\deemph.c" />
    <ClCompile Include="..\lib_com\delay_comp.c" />
    <ClCompile Include="..\lib_com\disclaimer.c" />
    <ClCompile Include="..\lib_com\enh1632.c" />
    <ClCompile Include="..\lib_com\enh40.c" />
    <ClCompile Include="..\lib_com\enr_1_az.c" />
    <ClCompile Include="..\lib_com\env_adj.c" />
    <ClCompile Include="..\lib_com\env_stab.c" />
    <ClCompile Include="..\lib_com\fft.c" />
    <ClCompile Include="..\lib_com\fft_rel.c" />
    <ClCompile Include="..\lib_com\fill_spectrum.c" />
    <ClCompile Include="..\lib_com\findpulse.c" />
    <ClCompile Include="..\lib_com\gs_gains.c" />
    <ClCompile Include="..\lib_com\hq2_core_com.c" />
    <ClCompile Include="..\lib_com\hq_conf.c" />
    <ClCompile Include="..\lib_com\ifft_rel.c" />
    <ClCompile Include="..\lib_com\interleave_spectrum.c" />
    <ClCompile Include="..\lib_com\interpol.c" />
    <ClCompile Include="..\lib_com\int_lsp.c" />
    <ClCompile Include="..\lib_com\ivas_agc_com_fx.c" />
    <ClCompile Include="..\lib_com\ivas_dirac_com.c" />
    <ClCompile Include="..\lib_com\ivas_masa_com.c" />
    <ClCompile Include="..\lib_com\ivas_mct_com.c" />
    <ClCompile Include="..\lib_com\ivas_mdct_core_com.c" />
    <ClCompile Include="..\lib_com\ivas_rom_com.c" />
    <ClCompile Include="..\lib_com\ivas_sns_com_fx.c" />
    <ClCompile Include="..\lib_com\ivas_stereo_eclvq_com_fx.c" />
    <ClCompile Include="..\lib_com\ivas_tools.c" />
    <ClCompile Include="..\lib_com\lag_wind.c" />
    <ClCompile Include="..\lib_com\lerp.c" />
    <ClCompile Include="..\lib_com\limit_t0.c" />
    <ClCompile Include="..\lib_com\longarith.c" />
    <ClCompile Include="..\lib_com\modif_fs.c" />
    <ClCompile Include="..\lib_com\mslvq_com.c" />
    <ClCompile Include="..\lib_com\preemph.c" />
    <ClCompile Include="..\lib_com\rom_com.c" />
    <ClCompile Include="..\lib_com\swb_tbe_com.c" />
    <ClCompile Include="..\lib_com\tcx_mdct_window.c" />
    <ClCompile Include="..\lib_com\tec_com.c" />
    <ClCompile Include="..\lib_com\tools.c" />
    <ClCompile Include="..\lib_com\wtda.c" />
    <ClCompile Include="..\lib_com\gs_bitallocation_ivas_fx.c" />
    <ClCompile Include="..\lib_com\ivas_stereo_ica_com_fx.c" />
    <ClCompile Include="..\lib_com\frame_ener_fx.c" />
    <ClCompile Include="..\lib_com\get_gain_fx.c" />
    <ClCompile Include="..\lib_com\gs_preech_fx.c" />
    <ClCompile Include="..\lib_com\hp50_fx.c" />
    <ClCompile Include="..\lib_com\env_stab_trans.c" />
    <ClCompile Include="..\lib_com\basop_com_lpc.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\basop_lsf_tools.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\basop_tcx_utils.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\basop_util.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\basop32.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\bitstream.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\cldfb.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\cng_exc.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\complex_basop.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\core_com_config.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\deemph.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\delay_comp.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\disclaimer.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\enh40.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\enh1632.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\enr_1_az.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\env_adj.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\env_stab.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\env_stab_trans.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\fft.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\fft_rel.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\fill_spectrum.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\findpulse.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\float_to_fix_ops.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\frame_ener_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\get_gain_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\gs_bitallocation_ivas_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\gs_gains.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\gs_preech_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\hp50_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\hq_conf.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\hq2_core_com.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ifft_rel.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\int_lsp.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\interleave_spectrum.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\interpol.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_agc_com_fx.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_dirac_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_masa_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_mct_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_mdct_core_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_rom_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_sns_com_fx.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_stereo_eclvq_com_fx.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_stereo_ica_com_fx.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_tools.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\lag_wind.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\lerp.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\limit_t0.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\longarith.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\modif_fs.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\mslvq_com.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\oper_32b.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\preemph.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\rom_basic_math.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\rom_com.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\swb_tbe_com.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\tcx_mdct_window.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\tec_com.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\tools.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\wtda.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\parameter_bitmaping_fx.c">
      <Filter>common_all_c</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\lib_com\basop_proto_func.h">
@@ -493,7 +617,6 @@
    <ClInclude Include="..\lib_com\rom_com_fx.h">
      <Filter>common_h</Filter>
    </ClInclude>
    <ClInclude Include="..\lib_com\prot_fx.h" />
    <ClInclude Include="..\lib_com\count.h">
      <Filter>common_h</Filter>
    </ClInclude>
@@ -504,6 +627,9 @@
    <ClInclude Include="..\lib_com\ivas_prot_fx.h">
      <Filter>common_h</Filter>
    </ClInclude>
    <ClInclude Include="..\lib_com\prot_fx.h">
      <Filter>common_all_c</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <Filter Include="common_evs_c">
+0 −99

File changed.

Preview size limit exceeded, changes collapsed.

+608 −296

File changed.

Preview size limit exceeded, changes collapsed.

Loading